package com.ck.ips.dao;

import com.ck.ips.model.vo.board.*;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 数据看板数据库连接
 *
 * @author XC17125
 */
public interface DataBoardMapper {
    /**
     * 获取广告实时上刊
     *
     * @return 根据节目名称及
     */
    List<ProgramRealTimeVo> getRealTimeProgram();

    /**
     * 覆盖城市数量、商场数、屏幕数、覆盖人数
     *
     * @return 统计信息
     */
    MainStaticVo getStoreStaticInfo();

    /**
     * 获取设备数量
     *
     * @return 设备可用总数量
     */
    Long getDeviceCount();

    /**
     * 获取省份地图数据
     *
     * @return 省份地图数据
     */
    List<ProvinceMapVo> getProvinceMapData();

    /**
     * 获取最近12个月节目数量
     *
     * @return
     */
    List<ProgramCountVo> getProgramCountByMonth();

    /**
     * 屏幕分布
     *
     * @return 屏幕分布  尺寸  数量
     */
    List<ScreenCountVo> getScreenSizeCount();

    /**
     * 获取商店播放广告的数量
     *
     * @param startTime 统计开始时间
     * @return 广告播放数量
     */
    List<StoreProgramVo> getStoreProgramCount(Long startTime);

    /**
     * 获取大屏数目
     *
     * @return 大屏数据
     */
    DeviceScreenVo getBigScreenCount();

    /**
     * 获取小屏幕数目
     *
     * @return 小屏幕数据
     */
    DeviceScreenVo getSmallScreenCount();

    /**
     * 添加屏幕尺寸统计数据
     *
     * @param currentDayTime   当前日期
     * @param smallTotal       小屏幕数量
     * @param smallOnlineTotal 小屏幕在线数量
     * @param bigTotal         大屏幕数量
     * @param bigOnlineTotal   大屏幕在线数量
     */
    void insertScreenStatisticData(@Param("currentDayTime") String currentDayTime,
                                   @Param("smallTotal") Long smallTotal,
                                   @Param("smallOnlineTotal") Long smallOnlineTotal,
                                   @Param("bigTotal") Long bigTotal,
                                   @Param("bigOnlineTotal") Long bigOnlineTotal);

    /**
     * 获取led屏幕状态统计
     *
     * @return 获取led屏幕状态统计
     */
    List<LedStatisticVo> getLedStatus();

    /**
     * 根据日期获取监播数据
     *
     * @param playDate 播放日期
     * @return
     */
    MonitorDataVo getMonitorDataByDate(String playDate);

    /**
     * 新增监播统计数据
     *
     * @param data
     */
    void insertMonitorStatisticData(MonitorDataVo data);

    /**
     * 获取每日刊播汇总统计
     *
     * @return 每日刊播汇总统计
     */
    List<MonitorDataVo> getMonitorData();
}
